#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N = 2e5;
#define INF 0x7fffffff
typedef long long int ll;
using namespace std;
//----------------------------------------------------------------------------//
int a[55][55];
void solve()
{
	int n;
	sd(n);
	int cur_mx = n * n;
	int cur_mi = 1;
	bool is_mx = false;
	for (int i = 0; i < n; i++)
	{
		if ((i+1) & 1)
		{
			// for (int j = i * n + 1; j <= n * (i + 1); j++)
			// {
			// 	if (!is_mx)
			// 	{
			// 		a[i + 1][j] = cur_mi; cur_mi++; is_mx = true;
			// 	}
			// 	else
			// 	{
			// 		a[i + 1][j] = cur_mx; cur_mx--; is_mx = false;
			// 	}
			// }

			for (int j =1; j <=n ; j++)
			{
				if (!is_mx)
				{
					a[i + 1][j] = cur_mi; cur_mi++; is_mx = true;
				}
				else
				{
					a[i + 1][j] = cur_mx; cur_mx--; is_mx = false;
				}
			}
		}
		else
		{
			/*for (int j = n * (i + 1); j > i * n; j--)
			{
				if (!is_mx)
				{
					a[i + 1][j] = cur_mi; cur_mi++; is_mx = true;
				}
				else
				{
					a[i + 1][j] = cur_mx; cur_mx--; is_mx = false;
				}
			}
		}*/

			for (int j = n; j >0; j--)
			{
				if (!is_mx)
				{
					a[i + 1][j] = cur_mi; cur_mi++; is_mx = true;
				}
				else
				{
					a[i + 1][j] = cur_mx; cur_mx--; is_mx = false;
				}
			}
		}
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			cout << a[i][j] << " ";
		}
		puts("");
	}


}
//point: 1 3 == 1 4
//       4 2    3 2
int main()
{
	int T;
	sd(T);
	while (T--)
	{
		solve();
	}
	return 0;
}